import { camelize } from '.'

export const yesOrNo = [
  { label: '是', value: '1', raw: { listClass: 'primary' } },
  { label: '否', value: '0', raw: { listClass: 'info' } }
]

export const checkResultData = [
  { label: '未验收', value: -1 },
  { label: '验收通过', value: 10 },
  { label: '验收不通过', value: 11, raw: { listClass: 'danger' } },
  { label: '复核通过', value: 20 },
  { label: '复核不通过', value: 21, raw: { listClass: 'danger' } }
]

// 专业类别。用于缩写,颜色等样式，具体数据和值从接口获取
export const specialTypeList = [
  { label: '土建', value: 'x9oAAACVtHrJ1cAl', color: '#6f503b' },
  { label: '精装', value: 'x9oAAACVtHvJ1cAl', color: '#e48db5' },
  { label: '主体', value: 'x9oAAACVtH3J1cAl', color: '#6363a7' },
  { label: '基础', value: 'x9oAAACVtHzJ1cAl', color: '#eeac87' },
  { label: '水电', value: 'ab6cb3943caa4e5a9436aa8dda18089e', color: '#4fafe3' },
  { label: '景观', value: '16aa8bc958c447c68e96f2b7658706c5', color: '#56bccf' }
]

// 工程质量-其他抽检流程类型
export const cqRdcCourseTypes = [
  { label: '材料管理', value: 'zl-clgl' },
  { label: '按图施工', value: 'zl-atsg' },
  { label: '管理动作', value: 'gldz' }
]

// 工程质量-安全文明类型
export const cqCheckScTypes = [
  { label: '安全', value: 'SAFETY', abbr: '安', color: '#409eff' },
  { label: '文明', value: 'CIVILIZATION', abbr: '文', color: '#67c23a' }
]
// 工程质量-项目事故等级
export const proAccidentLevels = [
  { label: '一般', value: 'GENERAL', raw: { listClass: 'info' } },
  { label: '严重', value: 'SERIOUS', raw: { listClass: 'danger' } }
]

// 工程质量-验收标准-管理动作等级
export const gldzLevelList = [
  { value: 1, label: '样板验收' },
  { value: 2, label: '土建楼层会验' },
  { value: 3, label: '精装交付样板验收' }
]

// 工程过程检查项
export const inspectTypeList = [
  {
    specialType: '土建',
    specialTypeId: 'x9oAAACVtHrJ1cAl',
    processType: 'civil',
    scoreTypeList: [
      { label: '防渗漏', value: 'fsl' },
      {
        label: '质量',
        value: 'zl',
        children: [
          { label: '按图施工', value: 'zl-atsg' },
          { label: '材料管理', value: 'zl-clgl' },
          { label: '实测实量', value: 'zl-scsl', haveProductType: 1,
            children: [
              { label: '高层', value: 'HIGH', scoreKey: 'zlScslGcScore'},
              { label: '别墅', value: 'VILLA', scoreKey: 'zlScslBsScore'}
            ]
          },
          { label: '空鼓开裂', value: 'zl-kgkl', haveProductType: 1,
            children: [
              { label: '高层', value: 'HIGH', scoreKey: 'zlKgGcScore'},
              { label: '别墅', value: 'VILLA', scoreKey: 'zlKgBsScore'}
            ]
          },
          { label: '观感', value: 'zl-gg', haveProductType: 1,
            children: [ // HIGH高层 VILLA 别墅
              { label: '高层', value: 'HIGH', scoreKey: 'zlGgGcScore'},
              { label: '别墅', value: 'VILLA', scoreKey: 'zlGgBsScore'}
            ]
          },
          { label: '成品保护', value: 'zl-cpbh' }
        ]
      },
      {
        label: '安全',
        value: 'aq',
        children: [
          { label: '结构安全', value: 'jgaq' },
          { label: '施工安全', value: 'sgaq' }
        ]
      },
      { label: '文明', value: 'wm' },
      { label: '管理动作', value: 'gldz' }
    ]
  },
  {
    specialType: '精装',
    specialTypeId: 'x9oAAACVtHvJ1cAl',
    processType: 'handcover',
    scoreTypeList: [
      { label: '防渗漏', value: 'fsl' },
      {
        label: '质量',
        value: 'zl',
        children: [
          { label: '按图施工', value: 'zl-atsg' },
          { label: '材料管理', value: 'zl-clgl' },
          { label: '工艺构造', value: 'zl-gygz' },
          { label: '实测实量', value: 'zl-scsl' },
          { label: '空鼓开裂', value: 'zl-kgkl' },
          { label: '观感', value: 'zl-gg' },
          { label: '成品保护', value: 'zl-cpbh' }
        ]
      },
      {
        label: '安全文明',
        value: 'aqwm',
        children: [
          { label: '施工安全', value: 'sgaq' },
          { label: '文明', value: 'wm' }
        ]
      },
      { label: '管理动作', value: 'gldz' }
    ]
  }
]
// 通过过程类型获取检查项的枚举，用于展示 label
export const getScoreTypeEnum = processType => {
  const item = inspectTypeList.find(i => i.processType === processType)
  if (!item) return null
  return item.scoreTypeList.reduce((o, i) => {
    o[i.value] = i.label
    i.children && i.children.map(j => (o[j.value] = j.label))
    return o
  }, {})
}
// 工程过程检查项(包含驼峰命名的key)
export const inspectTypeListWithKey = JSON.parse(JSON.stringify(inspectTypeList))
inspectTypeListWithKey.map(item =>
  item.scoreTypeList.map(i => {
    i.key = camelize(i.value)
    i.children && i.children.map(j => (j.key = camelize(j.value)))
  })
)

// 验收对象
export const unitTypeList = [
  { label: '楼层', value: 1, unit: '层' },
  { label: '房间', value: 2, unit: '户' },
  { label: '楼栋', value: 3, unit: '栋' },
  { label: '桩基', value: 4, unit: '个' },
  { label: '公区', value: 5, unit: '处' },
  { label: '外立面', value: 6, unit: '批' },
  { label: '批次', value: 7, unit: '个' },
  { label: '防火分区', value: 8, unit: '个' }
]

// 工程质量-随机区域类型。注：增加验收对象字段
export const cqRandomAreaType = [
  { label: '楼栋', value: 'build', unitType: 3 },
  { label: '楼层', value: 'floor', unitType: 1 },
  { label: '房间', value: 'room', unitType: 2 },
  { label: '地下室', value: 'under', unitType: 5 },
  { label: '防火分区', value: 'firezone', unitType: 8 }
]

// 抽检业态类型。增加key
export const cqProductType = [
  { label: '高层', value: 'HIGH', key: 'Gc' },
  { label: '别墅', value: 'VILLA', key: 'Bs' }
]

// 抽检过程 规则常量
export const RULE_TYPE = {
  SJTK: 1, // 升级条款
  HGTK: 2, // 合格条款
  FHTK: 3, // 符合条款
  ZJPD: 4, // 直接评定
  TJTK: 9, // 条件条款
  HGJF: 5, // 合格计分
  YZKF: 6, // 阈值扣分
  CFKF: 7, // 重复扣分
  ZJKF: 8, // 直接扣分
  ALKF: 10 // 按类扣分
}

// 抽检过程 计分评级种类 常量
export const SCORE_TYPE = {
  FSL: 'fsl', // 防渗漏
  ZL: 'zl', // 质量
  AQ: 'aq', // 安全
  WM: 'wm', // 文明
  GLDZ: 'gldz', // 管理动作
  OTHERS: 'others', // 其他
  ZLSCSL: 'zl-scsl', // 实测实量
  ZLKGKL: 'zl-kgkl', // 空鼓开裂
  ZLGG: 'zl-gg', // 观感
  ZLCPBH: 'zl-cpbh', // 成品保护
  ZLATSG: 'zl-atsg', // 按图施工
  ZLCLGL: 'zl-clgl', // 材料管理
  ZLGYGZ: 'zl-gygz', // 工艺构造
  SGAQ: 'sgaq', // 施工安全
  JGAQ: 'jgaq', // 结构安全
  GLDZYBYS: 'gldz-ybys', // 样板验收
  GLDZGXYS: 'gldz-gxys', // 关键工序
  GLDZDAGL: 'gldz-dagl' // 档案管理
}

// 抽检过程 部位 类别 常量
export const LOCATION_TYPE = {
  HN: 'hn', // 户内
  GQ: 'gq', // 公区
  WLM: 'wlm' // 外立面
}

// 抽检过程 -管理动作 ：样板验收评价 编码 常量
export const GLDZ_YBYSPJ = {
  YBYSPJ: 'ybyspj', // 样板验收评价
  FSLZXYB: 'fslzxyb', // 防渗漏专项样板
  JFYBYS: 'jfybys', // 景观样板验收
  JZGFYBYS: 'jzgfybys', // 精装工法样板验收
  JZJFYBYS: 'jzjfybys', // 精装交付样板验收
  TJLCHY: 'tjlchy' // 土建楼层会验
}

// 工程品质加减 字典常量
export const CQ_BONUS_DEDUCT = {
  CQ_ENGINEER_DEDUCT: 'cq_engineer_deduct', // 工程减分
  CQ_QUALITY_BONUS: 'cq_quality_bonus', // 品质加分
  CQ_QUALITY_DEDUCT: 'cq_quality_deduct' // 品质减分
}

// 评估-数据类型
export const CQ_EVAL_DATA_TYPE = {
  NUMBER: 'EVAL_NUMBER', // 数值
  ENUM: 'EVAL_ENUM' // 枚举
}
// 评估-得分类型
export const CQ_EVAL_SCORE_TYPE = {
  FIVE: '5', // 五分制
  TEN: '10', // 十分制
  HUNDRED: '100', // 百分制
  PERCENT: 'PERCENT', // 百分比
  ADD: 'EVAL_ADD', // 加分
  SUB: 'EVAL_SUB', // 减分
  ABC: 'cq_eval_abc', // A/B/C
  RESULT: 'cq_eval_result', // 优秀/合格/不合格
  VALID: 'cq_eval_valid' // 合格/不合格
}
// 评估-检查单位
export const CQ_EVAL_RDC_TYPE = {
  DEPT1: 'DEPT1', // 集团
  DEPT2: 'DEPT2' // 集群
}
// 评估-加减分对象
export const CQ_EVAL_ADDSUB_OBJ = {
  BUSSNIESS: 'BUSSNIESS', // 事业部
  CITY: 'CITY', // 城市公司
  PROJECT: 'PROJECT' // 项目
}
// 评估-录入方式
export const CQ_EVAL_INPUT_MODE = {
  ALL: 'ENTER_ALL', // 全录入
  OPTION: 'ENTER_OPTION' // 选录入
}
// 评估-检查项类型
export const CQ_EVAL_CHKITEM_TYPE = {
  FIRASS: 'FIRASS', // 一级考核指标
  SECASS: 'SECASS', // 二级考核指标
  CHKITEMTYPE: 'CHKITEMTYPE', // 检查项分类
  FIRCHK: 'FIRCHK', // 一级检查项
  SECCHK: 'SECCHK' // 二级检查项
}
// 评估-所属业务
export const CQ_EVAL_BUSS_BELONG = {
  CQEVAL: 'CQEVAL', // 检查项得分录入
  CQRDC: 'CQRDC', // 过程检查
  CQHISTORY: 'CQHISTORY' // 历史版本得分录入
}
// 评估-得分等级
export const CQ_EVAL_SCORE_LEVEL = { A: 'A', B: 'B', C: 'C' }
// 评估-检查结果
export const CQ_EVAL_RESULT_ENUM = {
  EXCELLENT: 'EXCELLENT', // 优秀
  VALID: 'VALID', // 合格
  UNVALID: 'UNVALID', // 不合格
  THROWTERM: 'THROWTERM' // 甩项
}

// 毛坯精装共享code
export const shareItemCode = ['GC-001-004-002', 'GC-001-004-005', 'GC-001-004-006']

// 交付类型
export const deliveryType = {
  JZ: 'HARDCOVER', // 精装
  MP: 'WORKBLANK', // 毛坯
  JZMP: 'WORKBLANK,HARDCOVER' // 精装,毛坯
}

// 检查过程类型
export const CQ_PROGRESS_CHK_TYPE = {
  ROUTINE_CHK: 'ROUTINE_CHK', // 常规检查
  SPECIAL_CHK: 'SPECIAL_CHK' // 专项检查
}

// 奥哲单据审批状态
export const TRD_AZ_ORDER_STATUS = {
  DRAFT: 'DRAFT', // 草稿
  PROCESSING: 'PROCESSING', // 进行中
  COMPLETED: 'COMPLETED', // 已完成
  CANCELED: 'CANCELED', // 已作废
  EXCEPTION: 'EXCEPTION', // 异常
  WAIT: 'WAIT' // 待同步
}

// 检查得分-锁定状态
export const lockStatusList = [
  { label: '锁定', value: 1, raw: { listClass: 'primary' } },
  { label: '未锁', value: 0, raw: { listClass: 'info' } }
]

// 基础管控-标段类型
export const SECTION_TYPE = {
  CIVIL: 'ENG_SEC', // 土建
  HARDCOVER: 'HARD_SEC' // 精装
}

// 过程检查 复查
export const chkStep = {
  NEEDRECHK: 'NEEDRECHK', // 专项复查
  NEEDDOUCHK: 'NEEDDOUCHK', // 重新检查
  NORMAL: 'NORMAL' // 正常检查
}

// 月份基础数据
export const monthList = [
  { value: '1', label: '一月份' },
  { value: '2', label: '二月份' },
  { value: '3', label: '三月份' },
  { value: '4', label: '四月份' },
  { value: '5', label: '五月份' },
  { value: '6', label: '六月份' },
  { value: '7', label: '七月份' },
  { value: '8', label: '八月份' },
  { value: '9', label: '九月份' },
  { value: '10', label: '十月份' },
  { value: '11', label: '十一月份' },
  { value: '12', label: '十二月份' }
]

// 抽球项目检查状态
export const checkStatusList = [
  {value: 1, label: '正常检查'},
  {value: 2, label: '专项复查'},
  {value: 3, label: '重新检查'}
]

// 抽球_检查系统
export const cq_pe_belong_system = {
  ENGINEER: 'ENGINEER', // 工程
  DESIGN: 'DESIGN' // 设计
}

// 上传的图片/视频的 type 值
export const imageTypes = ['png', 'jpg', 'jpeg']
export const videoTypes = ['mp4']

// 部分检查项编码枚举
export const EVAL_CHKITEM_CODE = {
  DELIVERY: 'GC-001-004', // 交付
  JF_YFYY: 'GC-001-004-001' // 一房一验
}

// 检查项分类的编码
export const evalChkitemTypeList = [
  { label: '交付', value: 'GC-001-004' },
  { label: '售后', value: 'GC-001-005' },
  { label: '展示区', value: 'GC-001-006' }
]

// 整改结果
export const evalRectifyResultList = [
  { label: '待验收', value: '10', raw: { listClass: 'info' } },
  { label: '已验收', value: '20', raw: { listClass: 'primary' } },
  { label: '已完成', value: '30', raw: { listClass: 'success' } },
  { label: '超时', value: '-10', raw: { listClass: 'warning' } },
  { label: '待指派', value: '0', raw: { listClass: 'info' } }
]
